﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Caduceu.Estudos.Entidades
{
    public abstract class EntidadeBase
    {
        protected int id;
        
        public override bool Equals(object obj)
        {
            EntidadeBase other = (obj as EntidadeBase);

            // se o outro não for uma EntidadeBase, então já sei que não são iguais
            if (other == null) return false;
            
            // se a classe do outro não for igual à da instância, então já sei que não são iguais
            if (this.GetType().Name != obj.GetType().Name) return false;

            return (this.Id == other.Id);
        }

        public override int GetHashCode()
        {
            return ((short) id ^ ((short) id >> 16));
        }

        public virtual int Id
        {
            get { return id; }
            set { id = value; }
        }
    }
}
